//package com.haiyou.dc.excel;
//
//import com.alibaba.fastjson.JSONArray;
//import com.alibaba.fastjson.JSONObject;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//
//import java.util.Map;
//public class ExcelReadListener extends AnalysisEventListener<Map<Integer, String>> {
//    private Logger logger = LoggerFactory.getLogger(ExcelReadListener.class);
//    //	//	 每隔N条存储数据库，实际使用中可以3000条，然后清理list ，方便内存回收
//    private static final int BATCH_COUNT = 3000;
//    //	自定义用于暂时存储数据，通过Getter在方法中获取
//    JSONArray array = new JSONArray();
//    /**
//     * 在转换异常 获取其他异常下会调用本接口。抛出异常则停止读取。如果这里不抛出异常则 继续读取下一行。
//     * 如果不重写该方法,默认抛出异常,停止读取
//     *
//     * @param exception
//     * @param context
//     * @throws Exception
//     */
//    @Override
//    public void onException(Exception exception, AnalysisContext context) {
//        logger.error("解析失败，但是继续解析下一行:{}", exception.getMessage());
//        if (exception instanceof ExcelDataConvertException) {
//            ExcelDataConvertException excelDataConvertException = (ExcelDataConvertException)exception;
//            logger.error("第{}行，第{}列解析异常，数据为:{}", excelDataConvertException.getRowIndex(),
//                    excelDataConvertException.getColumnIndex(), excelDataConvertException.getCellData());
//        }
//    }
//    /**
//     * 每解析一行会回调invoke()方法。
//     * 如果当前行无数据,该方法不会执行,
//     * 也就是说如果导入的的excel表无数据,该方法不会执行,
//     * 不需要对上传的Excel表进行数据非空判断
//     *
//     * @param map  当前读取到的行数据
//     * @param analysisContext 定义了获取读取excel相关属性的方法
//     */
//    @Override
//    public void invoke(Map<Integer, String> map, AnalysisContext analysisContext) {
////		目前只需要表格第一行，这里直接跳过
//        return;
//    }
//    /**
//     * 这里会一行行的返回头,每个sheet只返回一次
//     *
//     * @param headMap
//     * @param context
//     */
//    @Override
//    public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
//        logger.info("解析到一条头数据:{}", headMap.toString());
//        for (int i = 0; i < headMap.size(); i++) {
//            JSONObject object = new JSONObject();
//            object.put("name","c_"+(i+1));
//            object.put("type","String");
//            if (headMap.get(i) == null) {
//                object.put("desc","");
//            } else {
//                object.put("desc",headMap.get(i));
//            }
//            array.add(object);
//        }
//    }
//    /**
//     * 解析监听器
//     * 每个sheet解析结束会执行该方法
//     */
//    @Override
//    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
//        logger.info("/*------- 当前sheet读取完毕-------*/");
////		如果要在方法中拿到值，这里就不能清除，
////		array.clear();
//    }
//    public JSONArray getArray() {
//        return array;
//    }
//    public void setArray(JSONArray array) {
//        this.array = array;
//    }
//}